home *** CD-ROM | disk | FTP | other *** search
/ Trusted Irix /B 4.0.4 / Trusted-Irix B-4.0.1.iso / dist / eoe1.idb / usr / include / sys / IP5.h.z / IP5.h
C/C++ Source or Header  |  1992-04-03  |  6KB  |  153 lines

  1. /**************************************************************************
  2.  *                                      *
  3.  *          Copyright (C) 1987, Silicon Graphics, Inc.          *
  4.  *                                      *
  5.  *  These coded instructions, statements, and computer programs  contain  *
  6.  *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
  7.  *  are protected by Federal copyright law.  They  may  not be disclosed  *
  8.  *  to  third  parties  or copied or duplicated in any form, in whole or  *
  9.  *  in part, without the prior written consent of Silicon Graphics, Inc.  *
  10.  *                                      *
  11.  **************************************************************************/
  12.  
  13. /*
  14.  * IP5.h -- cpu board specific defines for IP5
  15.  */
  16.  
  17. #ifndef __SYS_IP5_H__
  18. #define __SYS_IP5_H__
  19.  
  20. #ident "$Revision: 1.86 $"
  21.  
  22. #if !LOCORE
  23. #include "sys/types.h"
  24. #endif !LOCORE
  25.  
  26. /*
  27.  * IP5/7/9 CPU Board Addresses
  28.  */
  29. #define THREEWAY_TADDR    0xb8000000    /* 3-way transfer trigger (IP7) */
  30. #define    LOCK_ADDR    0xbe000000    /* Lock array */
  31. #define    U_LOCK_ADDR    0xbe200000    /* Users' portion of lock array */
  32. #define    SBCC_ADDR    0xbe400000    /* SBCC chip */
  33. #define    LOCK_DIAGADDR    0xbec00000    /* Diagnostics lock array. */
  34. #define    U_LOCK_DIAGADDR    0xbee00000    /* Users' portion of " " " */
  35. #define MPSR_ADDR    0xbf000000    /* MP status register */
  36.  
  37. #define    SBE_ADDR    0xbf080000    /* Clear bus error interrupt */
  38.  
  39. #define    TIM0_ACK_ADDR    0xbf100000    /* Clear T0 interrupt */
  40. #define    TIM1_ACK_ADDR    0xbf180000    /* Clear T1 interrupt */
  41.  
  42. #define    LED_ADDR    0xbf200001    /* LED register */
  43.  
  44. #define    PT_CLOCK_ADDR    0xbf600000    /* Timer chip */
  45. #define    DUART0_ADDR    0xbf800000    /* Keyword/mouse DUART */
  46. #define    DUART1_ADDR    0xbfa00000    /* Second DUART */
  47. #define DUART2_ADDR    0xbf400000    /* Third DUART (IP9 only) */
  48. #define    EPROM_ADDR    0xbfc00000    /* EPROM */
  49. #define THREEWAY    0xbfe00000    /* 3-way transfer trigger (IP5) */
  50. #define THREEWAY_STAT1    0xbfe00000    /* 3-way transfer status reg (IP7/9) */
  51. #define THREEWAY_STAT2    0xbfe00010    /* 3-way transfer status reg (IP7/9) */
  52. #define THREEWAY_STATUS    THREEWAY_STAT1    /* 3-way transfer status reg (IP7/9) */
  53. #define DIRECT_MEM    0xb0000000    /* 32Mb of phys mem */
  54. #define IP7SDATA_ADDR    0xbc000000    /* 2nd level cache data */
  55. #define IP7STAG_BASE_ADDR    0xbc800004 /* 2nd level cache tag/state */    
  56. #define IP7STAG_END_ADDR    0xbc83fff4 /* 16K tag for IP7 */
  57. #define IP15STAG_END_ADDR    0xbc8ffff4 /* 64K tag for IP15 */
  58. #define    DCACHETAG_ADDR    0xbf400000    /* 2nd level dcache state/tag */
  59. #define STAG_BASE_ADDR    0xbf400000    /* 2nd level cache tag address */
  60. #define STAG_END_ADDR    0xbf40fff0    /* 4K tag for IP5 */
  61. #define TOPMEM        0xf0000000    /* back door memory */
  62.  
  63. /* bit values of 2nd level cache tag - bottom 12 bits are physical pfn */
  64. #define INVALID         0x3000
  65. #define VAL             0x2000
  66. #define SHARED            0x1000
  67. #define DIRTY             0x0000
  68.  
  69. /* instruction read buffer IP5 only */
  70. #define IBTAG_ADDR        0xbc800000
  71. #define IB_WORD0        0xbd000000
  72. #define IB_WORD1        0xbd000004
  73. #define IB_WORD2        0xbd800008
  74. #define IB_WORD3        0xbd80000c
  75.  
  76. /* MP Status Register bits for IP5 */
  77. #define MPSR_BEI    0x800        /* MP bus error interrupt pending = 0 */
  78. #define MPSR_BETMASK    0x700        /* MP bus error type */
  79. #define MPSR_3WAY    0x080        /* 3-way trigger status */
  80.  
  81. /* MP Status Register bits for IP7/9 */
  82. #define IP7MPSR_BEI    0x80000        /* MP bus error interrupt pending = 0 */
  83. #define IP7MPSR_BETMASK    0x70000        /* MP bus error type */
  84. #define IP7MPSR_MASK    0xf007f        /* only keep interesting bits */
  85.  
  86. /* MP Status Register bits for IP5/7/9 */
  87. #define MPSR_MASK    0xfff        /* its only 12 bits */
  88. #define MPSR_T1        0x0040        /* T1 interrupt pending == 1 */
  89. #define MPSR_T0        0x0020        /* T0 interrupt pending == 1 */
  90. #define MPSR_FP        0x0010        /* FP chip present == 0 */
  91. #define MPSR_IDMASK    0x0007        /* MP bus ID# */
  92. #define MPSR_IP5MASK    0x0008        /* x0 for IP5 */
  93. #define MPSR_IP7MASK    0x0088        /* 08 for IP7 */
  94. #define MPSR_IP9MASK    0x00f00088    /* 88 for IP9 */
  95. #define MPSR_IP5BRD    0x0000        /* x0 for IP5 */
  96. #define MPSR_IP7BRD    0x0008        /* 08 for IP7 */
  97. #define MPSR_IP9BRD    0x0088        /* 88 for IP9 */
  98.                     /* Note - 0xX088 for future IP's */
  99. /* MP Bus error types for IP5 */
  100. #define MPSR_BESHIFT    8
  101.  
  102. #define BE_TYPE(x)    ((x) << MPSR_BESHIFT)
  103.  
  104. #define BE_SDR        BE_TYPE(0)    /* 2nd data cache fill (R) */
  105. #define BE_SDW        BE_TYPE(1)    /* 2nd data cache fill (W) */
  106. #define BE_3WAY        BE_TYPE(2)    /* 3-way transfer */
  107. #define BE_IBUF        BE_TYPE(3)    /* instruction buffer fill */
  108. #define BE_IOWACK    BE_TYPE(4)    /* MPIO WACK error responce */
  109. #define BE_IOEACK    BE_TYPE(5)    /* MPIO EACK */
  110.  
  111. /* MP Bus error types for IP7/9 */
  112. #define IP7MPSR_BESHIFT    16
  113.  
  114. #define IP7BE_TYPE(x)    ((x) << IP7MPSR_BESHIFT)
  115.  
  116. #define IP7BE_NBREAD    IP7BE_TYPE(0)    /* non block read */
  117. #define IP7BE_SDW    IP7BE_TYPE(1)    /* 2nd data cache fill (W) */
  118. #define IP7BE_3WAY    IP7BE_TYPE(2)    /* 3-way transfer */
  119. #define IP7BE_BLOCKI    IP7BE_TYPE(3)    /* block instruction */
  120. #define IP7BE_IOWACK    IP7BE_TYPE(4)    /* MPIO WACK error responce */
  121. #define IP7BE_IOEACK    IP7BE_TYPE(5)    /* MPIO EACK */
  122. #define IP7BE_BDREAD    IP7BE_TYPE(6)    /* block data read */
  123.  
  124. /* bits defined for THREEWAY (IP7/9) */
  125. #define THREEWAY_START_TRIG    0x4
  126. #define    THREEWAY_END_TRIG    0x2
  127. #define THREEWAY_SAVED_A4    0x1
  128.  
  129. /* LED Register bits */
  130. #define    LED_3WAY    0x80        /* 3 Way disable bits */
  131. #define LED_MASK    0x7f        /* actual value */
  132.  
  133. /* Hardware lock entry */
  134. #define    LOCK_NUMPAGES    1024        /* number of pages of locks */
  135. #define    LOCK_NUMKPAGES    512        /* number of kernel pages of locks */
  136. #define    LOCK_NUMUPAGES    512        /* number of user pages of locks */
  137. #define    LOCK_PERPAGE    64        /* number of locks per page */
  138. #define    LOCK_TAKEN    0x1        /* least significant bit of value */
  139.  
  140. #define    CAUSE_BERRINTR    CAUSE_IP8    /* Bus error intr. */
  141.  
  142. #define    TLBLO_HWBITS        0x3fffffff    /* 24 bit ppn, CDVG */
  143. #define TLBLO_HWBITSHIFT    2        /* A shift value, for masking */
  144.  
  145. #define SR_BERRBIT    SR_IBIT8
  146.  
  147. #define    dcache_wb(X,Y)
  148. #define    dcache_wbinval(X,Y)    dcache_inval(X,Y)
  149.  
  150. #include "sys/clover2.h"
  151.  
  152. #endif /* __SYS_IP5_H__ */
  153.